<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数的简介</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        函数(Function)
            - 函数也是一个对象
            - 函数中可以封装一些功能（代码），在需要时可以执行这些功能（代码）
            - 函数中可以保存一些代码在需要的时候调用
            - 使用 typeof 检查一个函数对象时，会返回function
    */

    // 我们在实际开发中很少使用构造函数来创建一个函数对象
    // 创建一个函数对象
    // 可以将要封装的代码以字符串的形式传递给构造函数
    // var fun = new Function("document.write('hello 这是我的第一个函数');"); 

    // 封装到函数中的代码不会立即执行
    // 函数中的代码会在函数调用的时候执行
    // 调用函数 语法：函数对象();
    // 当调用函数时，函数中封装的代码会按照顺序执行
    // fun();


    /*
        使用 函数声明 来创建一个函数
            语法：
                function 函数名([形参1,形参2...形参N]){
                    语句...
                }

    */          
    function fun2(){
        document.write("这是我的第二个函数~ ~ ~");
        alert("哈哈哈");
        document.write(" ┭┮ ﹏ ┭┮");
        console.log("123456");
    }
    // 调用 fun2
    fun2();

    console.log(fun2);

    /*
        使用 函数表达式 来创建一个函数
        var 函数名 = function([形参1,形参2,..形参N]){
            语句...
        }
    */
    var fun3 = function(){
        console.log('匿名函数');
    };
    fun3();

</script>